﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace Krilib.Control.Advance
{
    public abstract class TimelineMouseControllableItem
    {
        /// <summary>
        /// Item Rectangle
        /// </summary>
        abstract public Rectangle ItemRect { get; }

        virtual public string Helptip { get { return null; } }

        /// <summary>
        /// Mouse over
        /// </summary>
        virtual public void OnMouseOver(object sender, MouseEventArgs e) { }

        /// <summary>
        /// Mouse move
        /// </summary>
        virtual public void OnMouseMove(object sender, MouseEventArgs e) { }

        /// <summary>
        /// Mouse enter
        /// </summary>
        virtual public void OnMouseEnter(object sender, MouseEventArgs e) { }

        /// <summary>
        /// Mouse leave
        /// </summary>
        virtual public void OnMouseLeave(object sender, MouseEventArgs e) { }

        /// <summary>
        /// Click this
        /// </summary>
        virtual public void OnMouseClick(object sender, MouseEventArgs e) { }

        /// <summary>
        /// Doubleclick This
        /// </summary>
        virtual public void OnMouseDoubleClick(object sender, MouseEventArgs e)
        {
            OnMouseClick(sender, e);
        }

        /// <summary>
        /// Mouse Down
        /// </summary>
        virtual public void OnMouseDown(object sender, MouseEventArgs e) { }

        /// <summary>
        /// Mouse Up
        /// </summary>
        virtual public void OnMouseUp(object sender, MouseEventArgs e) { }
    }
}
